Docker Compose
Contents
Docker Compose
Docker compose 是Docker官方编排的项目之一,负责快速的部署分布式应用。
简介
负责实现对Docker容器集群的快速编排。从功能上看,跟openstack中的Heat十分类似。
Compose定位是定义和运行多个Docker 容器的应用。
通过一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器,但是很多情况下,需要多个容器相互配合来完成某项任务,Compose刚好满足了这样的需求。
它允许用户通过一个单独的docker-compose.yml
模板文件来定义一组相关联的应用容器为一个项目。
Compose中有两个重要的概念,分别是
- 服务:一个应用的容器,实际上也可以包括若干运行相同镜像的容器实例。
- 项目:由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml中定义。
Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
可见,一个项目可以由多个服务(容器)关联而成,Compose面向项目进行管理。
使用
编写一个app.py文件用来记录页面访问次数,然后编写Dockerfile文件。,
1 | FROM python:3.6-alpine |
然后编写docker-compose.yml文件,这是Compose使用的主模板文件。
1 | version: '3' |
运行compose项目
1 | docker-compose up |
Compose 命令说明
对于Compose来说,大部分的命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。如果没有特别的说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响。
执行docker-compose [COMMAND] --help
或者docker-compose help [COMMAND]
可以查看具体某个命令的使用格式。
- build 是构建项目中的服务容器
- config验证compose文件格式是否正确
- down命令停止up命令所启动的容器,并移除网络
- exec进入指定的容器
- help获得一个命令的帮助
- images列出compose文件中包含的镜像
- Kill 强行停止服务容器
- logs 查看服务容器的输出
- pause 暂停一个服务容器
- port 打印某个容器端口所映射的公共端口
- ps 列出项目中目前的所有容器
- pull 拉取服务依赖的镜像
- push 推送服务依赖的镜像到Docker 镜像仓库
- restart 重启项目中的服务
- rm 删除所有停止的服务容器
- run 在指定服务上执行一个命令
- scale设置指定服务运行的容器个数
- start 启动已经存在的服务容器
- stop 停止已经处于运行状态的容器,但是不删除它。
- top 查看各个容器内运行的进程
- up 自动完成构建容器,重新创建服务,启动服务,并关联服务相关容器的一系列操作。
Compose 模板文件
模板文件是使用compose的核心,默认文件名是docker-compose.yml。格式是YAML
1 | version: "3" |
build
指定Dockerfile 所在文件夹的路径。Compose 将会利用它来自动构建这个镜像,然后使用这个镜像。
command
覆盖容器启动后默认执行的命令。
dns
自定义DNS服务器,可以是一个值,也可以是一个列表。
tmpfs
挂载一个tmpfs文件系统到容器
env_file
从文件中获取环境变量
environment
设置环境变量
expose
暴露端口,但是不映射到宿主机,只被连接的服务访问。
secret
存储敏感数据
ports
暴露端口信息
Author: corn1ng
Link: https://corn1ng.github.io/2018/04/06/docker/Docker Compose/
License: 知识共享署名-非商业性使用 4.0 国际许可协议